home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-09-14 | 916 b | 57 lines | [TEXT/MPS ] |
- <<
- class ANTLRToken : public DLGBasedToken {
- public:
- int muck;
- public:
- ANTLRToken(TokenType t, ANTLRChar *s) : DLGBasedToken(t)
- { muck = atoi(s); }
- ANTLRToken() {;}
- ANTLRChar *getText() { return ""; }
- void setText(ANTLRChar *s) { ; }
- virtual ANTLRLightweightToken *makeToken(TokenType t, char *s, int line)
- { setType(t); muck = atoi(s); }
- };
-
- #include "DLGLexer.h"
-
- main()
- {
- ANTLRToken aToken;
- DLGFileInput in(stdin);
- DLGLexer scan(&in,2000);
- ANTLRTokenBuffer pipe(&scan);
- scan.setToken(&aToken);
- Expr parser(&pipe);
- parser.init();
-
- parser.calc();
- }
- >>
-
- #token "[\ \t\n]+" <<skip();>>
-
- class Expr {
-
- calc: <<int r;>>
- e>[r]
- <<printf("result is %d\n", r);>>
- ;
-
- e > [int r]
- : <<int a,b=0;>>
- e2>[a] ( "\+" e2>[b] )*
- <<$r = a + b;>>
- ;
-
- e2 > [int r]
- : <<int a,b=1;>>
- NUMBER <<a=$1->muck;>>
- ( "\*" NUMBER <<b=$2->muck;>> )*
- <<$r = a * b;>>
- ;
-
- }
-
- #token NUMBER "[0-9]+"
-
-